import XCTest

class PhotosUITests: XCTestCase {

    override func setUpWithError() throws {
        // Put setup code here. This method is called before the invocation of each test method in the class.

        // In UI tests it is usually best to stop immediately when a failure occurs.
        continueAfterFailure = false

        // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
    }

    override func tearDownWithError() throws {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
    }

    func testExample() throws {
        // UI tests must launch the application that they test.
        let app = XCUIApplication()
        app.launch()

        // Use recording to get started writing UI tests.
        // Use XCTAssert and related functions to verify your tests produce the correct results.
    }
}
extension PhotosUITests {
    func testPhotosList() -> () {
        let app = XCUIApplication()
        app.launch()
        let entryButton = app.buttons.element(matching: .button, identifier: "Entry")
        entryButton.tap()
        sleep(5)
        let tableView = app.tables.firstMatch
        let cellIndx = Int.random(in: 1..<10)
        while !tableView.cells.element(boundBy: cellIndx).isHittable {
            tableView.swipeUp()
        }
        let cell = tableView.cells.element(boundBy: cellIndx)
        cell.tap()
        let backButton = app.navigationBars.buttons.firstMatch
        backButton.tap()
        while !tableView.cells.firstMatch.isHittable {
            tableView.swipeDown()
        }
        tableView.swipeDown()
        sleep(5)
    }
}
